/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.munif.util;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 * @author munif
 */
public class CrudFacade {

    public static final int MAXCONSULTA = 30;
    private static CrudFacade instance = new CrudFacade();

    public static CrudFacade getInstance() {
        return instance;
    }

    private CrudFacade() {
    }

    public Object recuperar(Class clazz, Object chave) {
        EntityManager em = Persistencia.getTlem().get();
        return em.find(clazz, chave);
    }

    public void inserir(Object entidade) {
        EntityManager em = Persistencia.getTlem().get();
        em.persist(entidade);
    }

    public void alterar(Object entidade) {
        EntityManager em = Persistencia.getTlem().get();
        em.merge(entidade);
    }

    public void remover(Object entidade) {
        EntityManager em = Persistencia.getTlem().get();
        entidade = recuperar(entidade.getClass(), Persistencia.getId(entidade));
        em.remove(entidade);
    }

    public List listarTodos(Class classe) {
        EntityManager em = Persistencia.getTlem().get();
        Query q = em.createQuery("from " + classe.getCanonicalName() + " order by " + Persistencia.primeiroAtributo(classe).getName());
        return q.getResultList();
    }

    public List listarTodos(Class classe,String ordenadoPor) {
        EntityManager em = Persistencia.getTlem().get();
        Query q = em.createQuery("from " + classe.getCanonicalName() + " order by " + ordenadoPor);
        return q.getResultList();
    }
}
